<!--
 * @Author: Betty
 * @Date: 2020-11-18 22:16:19
 * @LastEditors: Betty
 * @LastEditTime: 2021-03-21 18:30:17
 * @Description: 主页
-->
<template>
  <div class="home-page">
    <section class="py-5 text-center container">
      <div class="row py-lg-5">
        <div class="col-lg-6 col-md-8 mx-auto">
          <img src="../assets/callout.svg" alt="callout" class="w-50" />
          <h2 class="font-weight-light">随心写作，自由表达</h2>
          <p>
            <a href="#" class="btn btn-primary my-2">开始写文章</a>
          </p>
        </div>
      </div>
    </section>
    <h4 class="font-weight-bold text-center">发现精彩</h4>
    <column-list :list="list"></column-list>
    <!-- 新增一个“加载更多”的按钮 -->
    <button class="btn btn-outline-primary mt-2 mb-5 mx-auto btn-block w-25"
     @click.prevent="loadMorePage" v-if="!isLastPage"
     >
     加载更多
    </button>
  </div>
</template>

<script lang="ts">
import { computed, defineComponent, onMounted } from 'vue'
// 导入userStore钩子函数
import { useStore } from 'vuex'
// eslint-disable-next-line no-unused-vars
import { GlobalDataProps } from '../store'
import ColumnList from '../components/ColumnList.vue'
// 导入useLoadMore函数
import useLoadMore from '../hooks/useLoadMore'
export default defineComponent({
  name: 'Home',
  components: {
    ColumnList
  },
  setup() {
    // 拿到store对象
    const store = useStore<GlobalDataProps>()
    // 创建total，这是一个计算属性，返回store里的专栏total
    const total = computed(() => store.state.columns.total)
    // 拿到当前请求到了第几页
    const currentPage = computed(() => store.state.columns.currentPage)
    // 在组件挂载好，我们准备好之后，我们来调用action发起异步请求
    onMounted(() => {
      // 传入第二个参数（关于分页的参数，请求第1页不变，页大小改为3）
      store.dispatch('fetchColumns', { pageSize: 3 })
    })
    // 创建一个计算属性，store里的数据应该放到计算属性中: computed(() => store.state.columns)
    // 现在我们把获取的办法写到getter里，这里使用getter就可以了，以后也不需要改这里了
    const list = computed(() => store.getters.getColumns)
    // 从getter里拿数据
    // const biggerColumnsLen = store.getters.biggerColumnsLen
    const { loadMorePage, isLastPage } = useLoadMore('fetchColumns', total, {pageSize: 3, currentPage: ( currentPage.value === 0 ? 2 : currentPage.value + 1 ) })
    return {
      list,
      loadMorePage,
      isLastPage
    }
  }
})
</script>
